package com.config;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

import javax.servlet.Filter;


/**
 * 下面的这个类是springMVC的容器类
 *
 * @author 86188
 */
//public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
//    @Override
//    protected WebApplicationContext createServletApplicationContext() {
//        AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
//        //这类将spring 的bean容器交给mvc一起管
//        ctx.register(SpringMvcConfig.class);
//        return ctx;
//    }
//
//    @Override
//    protected String[] getServletMappings() {
////        "/"表示所有的url请求都会被交给DispatcherServlet处理。
//        return new String[]{"/"};
//    }
//
//
//    //createRootApplicationContext是用于创建spring的bean容器的，要和springmvc的容器区分凯
//    @Override
//    protected WebApplicationContext createRootApplicationContext() {
//        AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
//        //这类将spring 的bean容器交给mvc一起管
//        ctx.register(SpringConfig.class);
//        return ctx;
//    }
//}

    //spring设置了AbstractDispatcherServletInitializer的新的继承类，简化了之前的配置过程
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    //设置字符过滤器，用于设置中文字符乱码的问题

    @Override
    protected Filter[] getServletFilters() {
        //这里使用的是spring中已经有的filter类
        CharacterEncodingFilter filter=new CharacterEncodingFilter();
        //设置使用的字符集
        filter.setEncoding("UTF-8");
        return new Filter[]{filter};
    }
}